/**
 * 
 */
package com.shifan.phone.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.shifan.phone.common.Tools;
import com.shifan.phone.dao.OrderModelMapper;
import com.shifan.phone.dao.ProductImageModelMapper;
import com.shifan.phone.model.OrderModel;
import com.shifan.phone.model.ProductImageModel;
import com.shifan.phone.service.OrderModelService;

/**
 * 订单Service接口实现类
 * @author TangLei
 * @date 2018年12月5日 下午5:10:34
 * @version 1.0
 */
@Service
public class OrderModelServiceImpl implements OrderModelService{
	//注入订单Dao接口
	@Resource
	OrderModelMapper orderModelDao;
	//注入图片Dao接口
	@Resource
	ProductImageModelMapper productImageModelDao;
	
	/**
	 * 删除
	 * @param ordersId 订单ID
	 * @return 影响的行数
	 */
	@Override
	public int deleteByPrimaryKey(String ordersId) {
		// 调用订单Dao接口里面的删除的方法
		return orderModelDao.deleteByPrimaryKey(ordersId);
	}

	/**
     * 增加（一次性增加所有字段）
     * @param record 订单对象
     * @return 影响的行数
     */
	@Override
	public int insert(OrderModel record) {
		//给订单状态赋值
		record.setOrdersState(1);
		//给订单编号赋值
		record.setOrdersCode(Tools.getDateOrderNumber());
		//给订单日期赋值
		record.setOrdersDate(Tools.getCurDateTime());
		// 调用订单Dao接口里面的增加的方法
		return orderModelDao.insert(record);
	}

	/**
     * 增加（增加 一个或多个字段）
     * @param record 订单对象
     * @return 影响的行数
     */
	@Override
	public int insertSelective(OrderModel record) {
		//给订单状态赋值
		record.setOrdersState(1);
		//给订单编号赋值
		record.setOrdersCode(Tools.getDateOrderNumber());
		//给订单日期赋值
		record.setOrdersDate(Tools.getCurDateTime());
		// 调用订单Dao接口里面的增加的方法
		return orderModelDao.insertSelective(record);
	}

	/**
     * 根据ID查询
     * @param ordersId 订单ID
     * @return 订单对象
     */
	@Override
	public OrderModel selectByPrimaryKey(String ordersId) {
		// 调用订单Dao接口里面的根据ID查询的方法
		return orderModelDao.selectByPrimaryKey(ordersId);
	}

	/**
     * 修改（修改一个或多个字段）
     * @param record 订单对象
     * @return 影响的行数
     */
	@Override
	public int updateByPrimaryKeySelective(OrderModel record) {
		// 调用订单Dao接口里面的修改的方法
		return orderModelDao.updateByPrimaryKeySelective(record);
	}

	/**
     * 修改（一次性修改所有字段）
     * @param record 订单对象
     * @return 影响的行数
     */
	@Override
	public int updateByPrimaryKey(OrderModel record) {
		// 调用订单Dao接口里面的修改的方法
		return orderModelDao.updateByPrimaryKey(record);
	}

	/**
	 * 查询所有订单
	 * @param record 订单对象
	 * @return map集合
	 */
	@Override
	public Map<String, Object> findAll(OrderModel record) {
		//创建一个Map集合
		Map<String,Object> map = new HashMap<String,Object>();
		//调用订单对象Dao接口的查询所有的方法
		List<OrderModel> list = orderModelDao.findAll(record);
		//循环遍历集合
		for(OrderModel orderModel:list){
			//创建图片对象
			ProductImageModel productImage = new ProductImageModel();
			//给图片对象赋值
			productImage.setProId(orderModel.getProId());
			//给图片对象的类型赋值
			productImage.setImgType(1);
			//调用图片对象Service接口的根据产品ID和图片类型查询的方法
			ProductImageModel productImageModels = productImageModelDao.findProIdAndType(productImage);
			//判断图片对象是否为空
			if(!Tools.isEmpty(productImageModels)){
				//给订单对象的图片地址赋值
				orderModel.setImgPath(productImageModels.getImgPath());
			}
		}
		//调用订单对象Dao接口的查询总行数的方法
		int count = orderModelDao.findCount(record);
		//给map集合赋值
		map.put("code", 0);
		map.put("msg", "");
		map.put("count", count);
		map.put("data", list);
		//返回map集合
		return map;
	}

	@Override
	public List<OrderModel> findHair(String userId) {
		// 调用订单对象Dao接口的查询待我发货的方法
		List<OrderModel> list = orderModelDao.findHair(userId);
		//循环遍历集合
		for(OrderModel orderModel:list){
			//创建图片对象
			ProductImageModel productImage = new ProductImageModel();
			//给图片对象赋值
			productImage.setProId(orderModel.getProId());
			//给图片对象的类型赋值
			productImage.setImgType(1);
			//调用图片对象Service接口的根据产品ID和图片类型查询的方法
			ProductImageModel productImageModels = productImageModelDao.findProIdAndType(productImage);
			//判断图片对象是否为空
			if(!Tools.isEmpty(productImageModels)){
				//给订单对象的图片地址赋值
				orderModel.setImgPath(productImageModels.getImgPath());
			}
		}
		return list;
	}

}
